home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / kerberos / pc / krb_libd.lha / Lib / Des / KEY_TEST.C < prev    next >
Encoding:
C/C++ Source or Header  |  1991-06-04  |  5.3 KB  |  225 lines

  1. /*
  2.  * $Source: /mit/kerberos/src/lib/des/RCS/key_test.c,v $
  3.  * $Author: jtkohl $
  4.  *
  5.  * Copyright 1988 by the Massachusetts Institute of Technology.
  6.  *
  7.  * For copying and distribution information, please see the file
  8.  * <mit-copyright.h>.
  9.  *
  10.  * exit status:         0 ==> success
  11.  *            -1 ==> error
  12.  */
  13.  
  14. #ifndef    lint
  15. static char rcsid_key_test_c[] =
  16. "$Header: key_test.c,v 4.7 88/11/15 11:29:09 jtkohl Exp $";
  17. #endif    lint
  18.  
  19. #include <mit_copy.h>
  20. #include <stdio.h>
  21. #include <errno.h>
  22. #include <des.h>
  23.  
  24. #define MIN_ARGC    0    /* min # args, not incl flags */
  25. #define MAX_ARGC    99    /* max # args, not incl flags */
  26.  
  27. extern char *errmsg();
  28. extern int des_key_sched();
  29. char *progname;
  30. int sflag;
  31. int vflag;
  32. int kflag;
  33. int mflag;
  34. int pid;
  35. extern int des_debug;
  36.  
  37. unsigned long dummy[2];
  38. unsigned char dum_c[8] = { 0x80,1,1,1,1,1,1,1 };
  39. des_key_schedule KS;
  40. des_cblock kk;
  41.  
  42. main(argc,argv)
  43.     int argc;
  44.     char *argv[];
  45. {
  46.     /*    Local Declarations */
  47.  
  48.     int i;
  49.     progname=argv[0];        /* salt away invoking program */
  50.  
  51.     /* Assume a long is four bytes */
  52.     if (sizeof(long) != 4) {
  53.     fprintf(stderr,"\nERROR,  size of long is %d",sizeof(long));
  54.     exit(-1);
  55.     }
  56.  
  57.     while (--argc > 0 && (*++argv)[0] == '-')
  58.     for (i=1; argv[0][i] != '\0'; i++) {
  59.         switch (argv[0][i]) {
  60.  
  61.         /* debug flag */
  62.         case 'd':
  63.         des_debug=1;
  64.         continue;
  65.  
  66.         /* keys flag */
  67.         case 'k':
  68.         kflag = 1;
  69.         continue;
  70.  
  71.         /* test ANSI msb only key */
  72.         case 'm':
  73.         mflag = 1;
  74.         continue;
  75.  
  76.         default:
  77.         printf("%s: illegal flag \"%c\" ",
  78.                progname,argv[0][i]);
  79.         exit(1);
  80.         }
  81.     };
  82.  
  83.     if (argc < MIN_ARGC || argc >MAX_ARGC) {
  84.     printf("Usage: xxx [-xxx]  xxx xxx\n");
  85.     exit(1);
  86.     }
  87.  
  88.     /*    argv[0] now points to first non-option arg, if any */
  89.  
  90.  
  91.     if (des_debug) {
  92.     if (mflag) {
  93.         fprintf(stderr,"\nChecking a key 0x 80 01 01 01 01 01 01 01 ");
  94.         fprintf(stderr,"\nKey = ");
  95.         des_key_sched(dum_c,KS);
  96.         des_cblock_print (dum_c);
  97.         return;
  98.     }
  99.  
  100.     if (kflag) {
  101.         printf("\nCHecking a weak key...");
  102.         dummy[0] =    0x01fe01fe;
  103.         dummy[1] =    0x01fe01fe;
  104.         des_key_sched((unsigned char*)dummy,KS);
  105. #ifdef BSDUNIX
  106.         fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
  107. #endif
  108. #ifdef CROSSMSDOS
  109.         fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
  110. #endif
  111.  
  112.         dummy[0] = 0x01010101;
  113.         dummy[1] = 0x01010101;
  114. #ifdef BSDUNIX
  115.         fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
  116. #endif
  117. #ifdef CROSSMSDOS
  118.         fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
  119. #endif
  120.         des_key_sched((unsigned char*)dummy,KS);
  121. #ifdef BSDUNIX
  122.         fprintf(stderr,"\nKS= %x",* (long *)KS);
  123. #endif
  124. #ifdef CROSSMSDOS
  125.         fprintf(stderr,"\nKS= %X",* (long *)KS);
  126. #endif
  127.         dummy[0] = 0x01010101;
  128.         dummy[1] = 0x01010101;
  129. #ifdef BSDUNIX
  130.         fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
  131. #endif
  132. #ifdef CROSSMSDOS
  133.         fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
  134. #endif
  135.         des_key_sched((unsigned char*)dummy,KS);
  136. #ifdef BSDUNIX
  137.         fprintf(stderr,"\nKS= %x",    *(long *)KS);
  138. #endif
  139. #ifdef CROSSMSDOS
  140.         fprintf(stderr,"\nKS= %X",    *(long *)KS);
  141. #endif
  142.  
  143.         dummy[0] = 0x80808080;
  144.         dummy[1] = 0x80808080;
  145. #ifdef BSDUNIX
  146.         fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
  147. #endif
  148. #ifdef CROSSMSDOS
  149.         fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
  150. #endif
  151.         des_key_sched((unsigned char*)dummy,KS);
  152. #ifdef BSDUNIX
  153.         fprintf(stderr,"\nKS[0]= %x",* (long * ) KS);
  154. #endif
  155. #ifdef CROSSMSDOS
  156.         fprintf(stderr,"\nKS[0]= %X",* (long * ) KS);
  157. #endif
  158.  
  159.         printf("\nstring to key 'a'");
  160.         des_string_to_key("a",dummy);
  161. #ifdef BSDUNIX
  162.         fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
  163. #endif
  164. #ifdef CROSSMSDOS
  165.         fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
  166. #endif
  167.         des_key_sched((unsigned char*)dummy,KS);
  168. #ifdef BSDUNIX
  169.         fprintf(stderr,"\nKS= %x",* (long *) KS);
  170. #endif
  171. #ifdef CROSSMSDOS
  172.         fprintf(stderr,"\nKS= %X",* (long *) KS);
  173. #endif
  174.  
  175.         printf("\nstring to key 'c'");
  176.         des_string_to_key("c",dummy);
  177. #ifdef BSDUNIX
  178.         fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
  179. #endif
  180. #ifdef CROSSMSDOS
  181.         fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
  182. #endif
  183.         des_key_sched((unsigned char*)dummy,KS);
  184. #ifdef BSDUNIX
  185.         fprintf(stderr,"\nKS= %x", * (long * ) KS);
  186. #endif
  187. #ifdef CROSSMSDOS
  188.         fprintf(stderr,"\nKS= %X", * (long * ) KS);
  189. #endif
  190.     }
  191.  
  192.     printf("\nstring to key 'e'");
  193.     des_string_to_key("e",dummy);
  194. #ifdef BSDUNIX
  195.     fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
  196. #endif
  197. #ifdef CROSSMSDOS
  198.     fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
  199. #endif
  200.     des_key_sched((unsigned char*)dummy,KS);
  201. #ifdef BSDUNIX
  202.     fprintf(stderr,"\nKS= %x",KS[0]);
  203. #endif
  204. #ifdef CROSSMSDOS
  205.     fprintf(stderr,"\nKS= %X",KS[0]);
  206. #endif
  207.  
  208.     printf("\ndes_string_to_key '%s'",argv[0]);
  209.     des_string_to_key(argv[0],dummy);
  210. #ifdef notdef
  211.     des_string_to_key(argv[0],dummy);
  212.  
  213.     for (i =0; i<1; i++)
  214.         des_key_sched(dummy,KS);
  215.     }
  216.     else
  217.     {
  218.     for (i =0; i<1000; i++) {
  219.         des_string_to_key(argv[0],kk);
  220.         des_key_sched(kk,KS);
  221.     }
  222. #endif
  223.     }
  224. }
  225.